/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estacionamento;
/**
 *
 * @author Pedro
 */
import java.util.Arrays;
import java.util.Scanner;


public class Estacionamento {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Criar variavel para passar texto
        String anykey = "";
        
        //criar scanner
        Scanner user_input = new Scanner(System.in);
        
        //Criar array para as matriculas
        String[] matLugares = new String[100];
        
        
        //repetir o programa atÃ© o utilizador desejar
        boolean sair = false;
        while (sair == false) //verificar se o utilizador jÃ¡ desejou sair
        {
            //perguntar ao utilizador o que quer fazer
            System.out.println("O que Ã© que deseja fazer?");
            System.out.println("Inserir registo - 1");
            System.out.println("Apagar registo - 2");
            System.out.println("Apagar todos os registos - 3");
            System.out.println("Sair - 0");

            int resposta = user_input.nextInt();

            //verificar resposta
            if (resposta == 1) //ver se Ã© a resposta 1 (Inserir Registo)
            {
                //pedir para inserir o numero do lugar
                System.out.println("Insira o lugar onde estÃ¡ estacionado o carro (De 1 a 100): " );
                int lugar = user_input.nextInt();
                              
                //verificar se lugar escolhido estÃ¡ ocupado ou nÃ£o
                if (matLugares[lugar - 1] == null)
                {
                    //pedir para inserir a matricula
                    System.out.println("Insira a matricula do carro: ");
                    String matricula = user_input.next();
                    
                    //verificar se matricula jÃ¡ existe
                    int verLugar = Estacionamento.CompStrings(matricula, matLugares); 
                    
                    if (verLugar != 0) //se existir
                    {
                        System.out.println("JÃ¡ se encontra no parque um carro com essa matricula, no lugar " + verLugar);
                        
                    }
                    else //se nao existir
                    {
                        matLugares[lugar - 1] = matricula;
                    }
                    
                }
                else //se o lugar estiver ocupado
                {
                       //mostrar
                    System.out.println("O lugar estÃ¡ ocupado. Liberte primeiro o lugar antes de inserir um registo novo.");
                    
                }
            }
            else if (resposta == 2) //Apagar Registo
            {
                //pedir o lugar
                System.out.println("Insira o lugar cujo registo deseja apagar:");
                int registo = user_input.nextInt();
                
                //criar ciclo de verificaÃ§Ã£o
                boolean valido = false;
                
                while (valido == false) //verificar se a resposta foi valida
                {
                    System.out.println("Deseja mesmo apagar este registo? (s/n)"); //confirmar se utilizador deseja apagar registo
                    String resp = user_input.next();

                     //verificar resposta
                    if (resp.equals("s")) //resposta positiva
                    {
                        matLugares[registo - 1] = null; //apagar registo
                        valido = true; //validar resposta
                        System.out.println("O registo foi apagado.");
                    }
                    else if (resp.equals("n")) //resposta negativa
                    {
                        valido = true; //validar resposta
                        System.out.println("OperaÃ§Ã£o cancelada.");
                    }
                    else //resposta incompativel
                    {
                        System.out.println("Resposta invÃ¡lida.");
                        valido = false; //nao validar resposta
                    }
                        
                        
                 }
              }
            else if(resposta == 3) //Apagar todos os registos
            {
                Arrays.fill( matLugares, null );
                
            }
         else if(resposta == 0) //Sair
            {
                sair = true; //O utilizador desejou sair, esta variavel fica verdadeira
                
            }
            else
            {
                System.out.println("OpÃ§Ã£o inexistente, escolha novamente.");
                
            }
           
        
        
        }
        
        
        
        
        
    }
    
    //Esta rotina Compara uma string com uma lista de strings, e vÃª se jÃ¡ existe uma igual. Devolve 0 se nao encontrar
    static int CompStrings (String objecto, String[] Lista) {
    
        boolean isExiste = false; //esta variavel verifica se a string existe ou nao
        int numero = 0; //esta variavel conta o numero de repetiÃ§Ãµes
        
        //lÃª por todos os elementos da lista
        for (String x : Lista)
        {
            if(isExiste == false) //verifica se o objeto ja foi descoberto
            {
            numero++; //adiciona uma repetiÃ§Ã£o
                if (x == null ? objecto == null : x.equals(objecto)) //compara o elemento currente da lista com o objeto
                {

                    isExiste = true; //se sim, existe
                }
            }
            
        }
        
        //caso nÃ£o exista, meter numero = 0;
        if(isExiste == false)
        {
            numero = 0;
        }
        
        return numero;
        
    }
}

